package com.example.demo.exception;

public enum ErrorCode {
    // 系统错误
    INTERNAL_SERVER_ERROR(1001),
    INVALID_PARAMETER(1002),
    // 认证错误
    UNAUTHORIZED(2000, "非法token，请先登录！"),
    USER_LOGIN_ERROR(2001, "用户名或密码错误"),
    USER_PASSWORD_ERROR(2002, "旧密码错误"),
    // 权限相关错误
    PERMISSION_DENIED(3003, "没有操作权限"),
    // 用户相关错误
    USER_NOT_FOUND(3001, "用户不存在"),
    USER_ALREADY_EXISTS(3002, "用户已存在"),
    
    // 角色相关错误
    ROLE_NOT_FOUND(4001, "角色不存在在"),
    ROLE_ALREADY_EXISTS(4002, "角色已存在"),
    
    // 公告相关错误
    NOTICE_NOT_FOUND(5001, "公告不存在"),
    
    // 菜单相关错误
    RULE_NOT_FOUND(6001, "菜单不存在"),
    RULE_NAME_EXIST(6002, "菜单名称已存在"),
    RULE_FRONTPATH_EXIST(6003, "前端路径已存在"),
    RULE_HAS_CHILDREN(6004, "存在子菜单，无法删除"),
    
    // 图库分类错误
    IMAGE_CLASS_NOT_FOUND(7001, "图库分类不存在"),
    IMAGE_CLASS_ALREADY_EXISTS(7002, "相册已经存在"),
    
    // 图片上传错误
    IMAGE_UPLOAD_FAILED(8001, "图片不存在"),
    IMAGE_NOT_FOUND(8002, "图片上传失败"),
    
    // 商品规格错误
    SKU_NOT_FOUND(9001, "规格不存在"),
    SKU_ALREADY_EXISTS(9002, "规格已存在"),
    
    // 优惠券错误
    COUPON_NOT_FOUND(10001, "优惠券不存在"),
    COUPON_EXISTS(10002, "优惠券已存在"),
    CREATE_COUPON_FAILED(10003, "创建优惠券失败"),
    UPDATE_COUPON_FAILED(10004, "更新优惠券失败"),
    UPDATE_COUPON_STATUS_FAILED(10005, "更新优惠券状态失败"),
    GET_COUPON_LIST_FAILED(10006, "获取优惠券列表失败"),
    DELETE_COUPON_FAILED(10007, "删除优惠券失败"),
    
    // 商品分类错误
    CATEGORY_NOT_FOUND(11001, "商品分类不存在"),
    CATEGORY_ALREADY_EXISTS(11002, "商品分类已存在"),
    
    // 商品错误
    GOODS_NOT_FOUND(12001, "商品不存在"),
    GOODS_EXISTS(12002, "商品已存在"),

    // 商品规格错误
    GOODS_SKUS_NOT_FOUND(13001, "商品规格不存在"),
    GOODS_SKUS_EXISTS(13002, "商品规格已存在"),

    // 商品规格组合错误
    GOODS_SKUS_COMB_NOT_FOUND(13001, "商品规格组合不存在"),
    GOODS_SKUS_COMB_EXISTS(13002, "商品规格组合已存在"),


    // 轮播图错误
    BANNERS_ADD_ERROR(13001, "轮播图新增错误")
    ;
    
    private final int code;
    private String message;

    ErrorCode(int code) {
        this.code = code;
    }

    ErrorCode(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}
